1. Field of the Invention
The present invention relates to partitionable computers and, more particularly, to techniques for allocating resources to partitions in partitionable computers.
2. Related Art
Computer system owners and operators are continually seeking to improve computer operating efficiencies and hence to reduce the cost of providing computing services. For example, servers of various kinds—such as database servers, web servers, email servers, and file servers—have proliferated within enterprises in recent years. A single enterprise may own or otherwise employ the services of large numbers of each of these kinds of servers. The cost of purchasing (or leasing) and maintaining such servers can be substantial. It would be advantageous, therefore, to reduce the number of servers that must be used by an enterprise without decreasing system performance.
One way to reduce the number of servers is through the process of “server consolidation,” in which multiple independent servers are replaced by a single server, referred to herein as a “consolidation server.” A consolidation server typically is a powerful computer system having significant computing resources (such as multiple processors and large amounts of memory). The consolidation server may be logically subdivided into multiple “partitions,” each of which is allocated a portion of the server's resources. A multi-partition consolidation server is an example of a “partitionable computer.” Each partition may execute its own operating system and software applications, and otherwise act similarly to an independent physical computer.
Unlike a collection of independent servers, typically it is possible to dynamically adjust the resources available to each partition/application in a consolidation server. Many applications experience variation in workload demand, which is frequently dependent on time of day, day of month, etc. Periods of high workload demand are frequently not coincident. Applying available resources to current high-demand workloads achieves improved resource utilization, decreased overall resource requirements, and therefore reduced overall cost.
As partitionable computers become more powerful, the trend is for them to include a greater and greater number of processors. In particular, a single partitionable computer typically includes several (e.g., 4) “cell boards,” each of which includes several (e.g., 2, 4, 8, or 16) processors. The cell boards are interconnected through a switching fabric and collectively provide an effective processing power that approaches the aggregate processing power of the individual processors they contain. Each successive generation of cell boards tends to include a greater number of processors than the previous generation.
Early processors, like many existing processors, included only a single processor core. A “multi-core” processor, in contrast, may include one or more processor cores on a single chip. A multi-core processor behaves as if it were multiple processors. Each of the multiple processor cores may essentially operate independently, while sharing certain common resources, such as a cache. Multi-core processors therefore provide additional opportunities for increased processing efficiency.
As the size, power, and complexity of partitionable computer hardware continues to increase, it is becoming increasingly desirable to provide flexibility in the allocation of computer resources (such as processors and I/O devices) among partitions. Insufficient flexibility in resource allocation may, for example, lead to underutilization of resources allocated to a first partition, while a second partition lacking sufficient resources operates at maximum utilization. What is needed, therefore, are improved techniques for allocating computer resources to partitions in partitionable computer systems.